package com.ruoyi.exam.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.exam.domain.ExamErrorQuestion;
import com.ruoyi.exam.vo.ExamErrorQuestionVo;
import com.ruoyi.exam.vo.SubmitAnswerVo;
import com.ruoyi.exam.vo.SubmitAnswerResultVo;

import java.util.List;

/**
 * 用户错题记录Service接口
 *
 * @author Tellsea
 * @date 2025-10-27
 */
public interface IExamErrorQuestionService extends IService<ExamErrorQuestion> {

    /**
     * 分页查询
     *
     * @param entity
     * @return
     */
    TableDataInfo<ExamErrorQuestionVo> queryList(ExamErrorQuestionVo entity);

    /**
     * 查询全部
     *
     * @param entity
     * @return
     */
    List<ExamErrorQuestionVo> queryAll(ExamErrorQuestionVo entity);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    ExamErrorQuestionVo queryById(Long id);

    /**
     * 加入错题记录
     *
     * @param entity
     * @return
     */
    int addErrorQuestion(ExamErrorQuestionVo entity);

    /**
     * 删除错题记录
     *
     * @param entity
     * @return
     */
    int deleteErrorQuestion(ExamErrorQuestionVo entity);

    /**
     * 查询用户在指定题库的错题ID列表（按题库排序）
     *
     * @param userId 用户ID
     * @param bankId 题库ID
     * @return 错题ID列表
     */
    List<Long> queryErrorQuestionIdsByBank(Long userId, Long bankId);

    /**
     * 错题答题提交答案
     * 如果答案正确，删除错题记录；如果答案错误，保留错题记录
     *
     * @param submitAnswerVo 提交答案的请求信息
     * @param userId 用户ID
     * @return 提交结果
     */
    SubmitAnswerResultVo submitErrorAnswer(SubmitAnswerVo submitAnswerVo, Long userId);
}
